home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / warnings.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  6KB  |  256 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import sys
  5. import types
  6. import linecache
  7. __all__ = [
  8.     'warn',
  9.     'showwarning',
  10.     'formatwarning',
  11.     'filterwarnings',
  12.     'resetwarnings']
  13. filters = []
  14. defaultaction = 'default'
  15. onceregistry = { }
  16.  
  17. def warn(message, category = None, stacklevel = 1):
  18.     if isinstance(message, Warning):
  19.         category = message.__class__
  20.     
  21.     if category is None:
  22.         category = UserWarning
  23.     
  24.     
  25.     try:
  26.         caller = sys._getframe(stacklevel)
  27.     except ValueError:
  28.         globals = sys.__dict__
  29.         lineno = 1
  30.  
  31.     globals = caller.f_globals
  32.     lineno = caller.f_lineno
  33.     if '__name__' in globals:
  34.         module = globals['__name__']
  35.     else:
  36.         module = '<string>'
  37.     filename = globals.get('__file__')
  38.     None if filename else None<EXCEPTION MATCH>AttributeError
  39.     if not filename:
  40.         filename = module
  41.     
  42.     registry = globals.setdefault('__warningregistry__', { })
  43.     warn_explicit(message, category, filename, lineno, module, registry, globals)
  44.  
  45.  
  46. def warn_explicit(message, category, filename, lineno, module = None, registry = None, module_globals = None):
  47.     if module is None:
  48.         if not filename:
  49.             pass
  50.         module = '<unknown>'
  51.         if module[-3:].lower() == '.py':
  52.             module = module[:-3]
  53.         
  54.     
  55.     if registry is None:
  56.         registry = { }
  57.     
  58.     if isinstance(message, Warning):
  59.         text = str(message)
  60.         category = message.__class__
  61.     else:
  62.         text = message
  63.         message = category(message)
  64.     key = (text, category, lineno)
  65.     if registry.get(key):
  66.         return None
  67.     
  68.     for item in filters:
  69.         (action, msg, cat, mod, ln) = item
  70.         if (msg is None or msg.match(text)) and issubclass(category, cat):
  71.             if mod is None or mod.match(module):
  72.                 if ln == 0 or lineno == ln:
  73.                     break
  74.                     continue
  75.     else:
  76.         action = defaultaction
  77.     if action == 'ignore':
  78.         registry[key] = 1
  79.         return None
  80.     
  81.     linecache.getlines(filename, module_globals)
  82.     if action == 'error':
  83.         raise message
  84.     
  85.     if action == 'once':
  86.         registry[key] = 1
  87.         oncekey = (text, category)
  88.         if onceregistry.get(oncekey):
  89.             return None
  90.         
  91.         onceregistry[oncekey] = 1
  92.     elif action == 'always':
  93.         pass
  94.     elif action == 'module':
  95.         registry[key] = 1
  96.         altkey = (text, category, 0)
  97.         if registry.get(altkey):
  98.             return None
  99.         
  100.         registry[altkey] = 1
  101.     elif action == 'default':
  102.         registry[key] = 1
  103.     else:
  104.         raise RuntimeError('Unrecognized action (%r) in warnings.filters:\n %s' % (action, item))
  105.     showwarning(message, category, filename, lineno)
  106.  
  107.  
  108. def showwarning(message, category, filename, lineno, file = None):
  109.     if file is None:
  110.         file = sys.stderr
  111.     
  112.     
  113.     try:
  114.         file.write(formatwarning(message, category, filename, lineno))
  115.     except IOError:
  116.         pass
  117.  
  118.  
  119.  
  120. def formatwarning(message, category, filename, lineno):
  121.     s = '%s:%s: %s: %s\n' % (filename, lineno, category.__name__, message)
  122.     line = linecache.getline(filename, lineno).strip()
  123.     if line:
  124.         s = s + '  ' + line + '\n'
  125.     
  126.     return s
  127.  
  128.  
  129. def filterwarnings(action, message = '', category = Warning, module = '', lineno = 0, append = 0):
  130.     import re as re
  131.     item = (action, re.compile(message, re.I), category, re.compile(module), lineno)
  132.     if append:
  133.         filters.append(item)
  134.     else:
  135.         filters.insert(0, item)
  136.  
  137.  
  138. def simplefilter(action, category = Warning, lineno = 0, append = 0):
  139.     item = (action, None, category, None, lineno)
  140.     if append:
  141.         filters.append(item)
  142.     else:
  143.         filters.insert(0, item)
  144.  
  145.  
  146. def resetwarnings():
  147.     filters[:] = []
  148.  
  149.  
  150. class _OptionError(Exception):
  151.     pass
  152.  
  153.  
  154. def _processoptions(args):
  155.     for arg in args:
  156.         
  157.         try:
  158.             _setoption(arg)
  159.         continue
  160.         except _OptionError:
  161.             msg = None
  162.             print >>sys.stderr, 'Invalid -W option ignored:', msg
  163.             continue
  164.         
  165.  
  166.     
  167.  
  168.  
  169. def _setoption(arg):
  170.     import re
  171.     parts = arg.split(':')
  172.     if len(parts) > 5:
  173.         raise _OptionError('too many fields (max 5): %r' % (arg,))
  174.     
  175.     while len(parts) < 5:
  176.         parts.append('')
  177.     (action, message, category, module, lineno) = [ s.strip() for s in parts ]
  178.     action = _getaction(action)
  179.     message = re.escape(message)
  180.     category = _getcategory(category)
  181.     module = re.escape(module)
  182.     if lineno:
  183.         
  184.         try:
  185.             lineno = int(lineno)
  186.             if lineno < 0:
  187.                 raise ValueError
  188.         except (ValueError, OverflowError):
  189.             None if module else []
  190.             None if module else []
  191.             raise _OptionError('invalid lineno %r' % (lineno,))
  192.         except:
  193.             None if module else []<EXCEPTION MATCH>(ValueError, OverflowError)
  194.         
  195.  
  196.     None if module else []
  197.     lineno = 0
  198.     filterwarnings(action, message, category, module, lineno)
  199.  
  200.  
  201. def _getaction(action):
  202.     if not action:
  203.         return 'default'
  204.     
  205.     if action == 'all':
  206.         return 'always'
  207.     
  208.     for a in ('default', 'always', 'ignore', 'module', 'once', 'error'):
  209.         if a.startswith(action):
  210.             return a
  211.             continue
  212.     
  213.     raise _OptionError('invalid action: %r' % (action,))
  214.  
  215.  
  216. def _getcategory(category):
  217.     import re
  218.     if not category:
  219.         return Warning
  220.     
  221.     if re.match('^[a-zA-Z0-9_]+$', category):
  222.         
  223.         try:
  224.             cat = eval(category)
  225.         except NameError:
  226.             raise _OptionError('unknown warning category: %r' % (category,))
  227.         except:
  228.             None<EXCEPTION MATCH>NameError
  229.         
  230.  
  231.     None<EXCEPTION MATCH>NameError
  232.     i = category.rfind('.')
  233.     module = category[:i]
  234.     klass = category[i + 1:]
  235.     
  236.     try:
  237.         m = __import__(module, None, None, [
  238.             klass])
  239.     except ImportError:
  240.         raise _OptionError('invalid module name: %r' % (module,))
  241.  
  242.     
  243.     try:
  244.         cat = getattr(m, klass)
  245.     except AttributeError:
  246.         raise _OptionError('unknown warning category: %r' % (category,))
  247.  
  248.     if not issubclass(cat, Warning):
  249.         raise _OptionError('invalid warning category: %r' % (category,))
  250.     
  251.     return cat
  252.  
  253. _processoptions(sys.warnoptions)
  254. simplefilter('ignore', category = PendingDeprecationWarning, append = 1)
  255. simplefilter('ignore', category = ImportWarning, append = 1)
  256.